import { IPSEAIScheme } from './ipseaischeme';
import { IPSSysEAIDE } from './ipssys-eaide';
import { IPSSysEAIDataType } from './ipssys-eaidata-type';
import { IPSSysEAIElement } from './ipssys-eaielement';
import { IPSSysSFPlugin } from '../res/ipssys-sfplugin';
import { IPSSystemModule } from '../system/ipssystem-module';

/**
 *
 * @export
 * @interface IPSSysEAIScheme
 */
export interface IPSSysEAIScheme extends IPSEAIScheme {
  /**
   * 集成实体映射集合
   *
   * @type {IPSSysEAIDE[]}
   */
  getAllPSSysEAIDEs(): IPSSysEAIDE[] | null;

  /**
   * 集成实体映射集合
   *
   * @type {IPSSysEAIDE[]}
   */
  get allPSSysEAIDEs(): IPSSysEAIDE[] | null;

  findPSSysEAIDE(objKey: any): IPSSysEAIDE | null;

  /**
   * 集成数据类型集合
   *
   * @type {IPSSysEAIDataType[]}
   */
  getAllPSSysEAIDataTypes(): IPSSysEAIDataType[] | null;

  /**
   * 集成数据类型集合
   *
   * @type {IPSSysEAIDataType[]}
   */
  get allPSSysEAIDataTypes(): IPSSysEAIDataType[] | null;

  findPSSysEAIDataType(objKey: any): IPSSysEAIDataType | null;

  /**
   * 集成元素集合
   *
   * @type {IPSSysEAIElement[]}
   */
  getAllPSSysEAIElements(): IPSSysEAIElement[] | null;

  /**
   * 集成元素集合
   *
   * @type {IPSSysEAIElement[]}
   */
  get allPSSysEAIElements(): IPSSysEAIElement[] | null;

  findPSSysEAIElement(objKey: any): IPSSysEAIElement | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  get psSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块（必须存在）
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModuleMust(): IPSSystemModule;
}
